package 开始的剑指offer8月.测试;

import java.util.Arrays;
import java.util.Scanner;
//找零钱最佳组合
//        时间限制： 3000MS
//        内存限制： 589824KB
//        题目描述：
//        假设商店货品价格皆不大于100元（价格小于等于100元），若顾客付款在100元内（顾客付款金额小于等于100元），求找给顾客之最少货币个(张) 数? (货币面值50元，10元，5 元，1元四种)。
//
//        说明：本题目中，已经给出了Java语言的标准代码，请使用右下方的“自测数据”功能，保存若干组测试用例，并逐一点击“调试”按钮进行调试，您提交的测试用例应尽可能覆盖全面。如您觉得默认代码不够完善，也可自行调整。
//
//        最终评分将根据测试用例的质量进行评判。
//
//
//
//
//
//        输入描述
//        购买价格R(整数，单位:元)
//
//        支付金额P (整数，单位:元)
//
//        输出描述
//        找零钱最佳组合,满足货币张数最小（张数C+金额N）
//
//
//        样例输入
//        23
//        50
//        样例输出
//        2张10元1张5元2张1元
//
//        规则

/*
ab串
时间限制： 3000MS
内存限制： 589824KB
题目描述：
小美数学很好，小团数学不怎么好。有一天小美又在用数学题欺负小团，
她提出了这样一个问题：“有多少个长度为n的仅由a和b组成的字符串既不包含aba也不包含bab？
如果你算不来大数你可以告诉我这个问题的答案模上998244353是多少”小团实在忍不住了，所以他决定来找你帮忙。

输入描述
第一行有一个整数n(1<=n<=100000)，代表小美问题中的参数。

输出描述
输出一个整数，即小美所问问题的答案除以998244353所得余数。
样例输入
3
样例输出
6
 */
public class Main {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int a=scanner.nextInt();
        String s=scanner.next();
        int count=0;
        for(int i=0;i<s.length()-1;i++){
            if(s.charAt(i)!=s.charAt(i+1)){ swap(s.charAt(i),s.charAt(i+1));
               count++;
            }
        }
        if(s.charAt(s.length()-1)==s.charAt(s.length()-3)&&s.charAt(s.length()-2)==s.charAt(s.length()-4)){
            System.out.println(count-1);
            return;
        }
        System.out.println(count);
    }
    public static String swap(char a, char b){
        char temp;
        temp=a;
        a=b;
        b=temp;
        char ab[]=new char[2];
        ab[0]=a;
        ab[1]=b;
        return Arrays.toString(ab);

    }
}
/*
ab串
时间限制： 3000MS
内存限制： 589824KB
题目描述：
小美数学很好，小团数学不怎么好。有一天小美又在用数学题欺负小团，她提出了这样一个问题：“有多少个长度为n的仅由a和b组成的字符串既不包含aba也不包含bab？如果你算不来大数你可以告诉我这个问题的答案模上998244353是多少”小团实在忍不住了，所以他决定来找你帮忙。



输入描述
第一行有一个整数n(1<=n<=100000)，代表小美问题中的参数。

输出描述
输出一个整数，即小美所问问题的答案除以998244353所得余数。


样例输入
3
样例输出
6

规则
请尽量在全场考试结束10分钟前调试程序，否则由于密集排队提交，可能查询不到编译结果
点击“调试”亦可保存代码
编程题可以使用本地编译器，此页面不记录跳出次数
 */

/*
坐公交
时间限制： 3000MS
内存限制： 589824KB
题目描述：
小美想坐公交去找小团玩。美团市中共有n个公交站，编号为1到n。同时也有m条公交线路，编号为1到m。小美想知道对于每一对公交站( i , j ) 从编号为 i 的站坐公交到编号为 j 的站至少需要乘坐几条不同的公交线路。



输入描述
第一行有两个空格隔开的整数n,m(1<=n<=500 , 1<=m<=500 且1<=n+m<=500)，代表公交站的个数和公交线路的条数。

接下来n行，每一行开头有一个整数k(1<=k<=m)，代表从这个站可以乘坐k条不同的公交线路。接下来有k个整数，代表这k条公交线路的编号。数字间用空格隔开。

输出描述
输出一个n×n的矩阵，矩阵中第 i 行第 j 列的数代表从编号为 i 的站坐到编号为j的站至少需要乘坐多少条不同的公交线路。矩阵中每行中的元素由单个空格隔开，且行末不能有空格。


样例输入
3 2
1 1
2 1 2
1 2
样例输出
0 1 2
1 0 1
2 1 0

 */

/*

不许ac
时间限制： 5000MS
内存限制： 589824KB
题目描述：
小美天天刷题，收获了很多ac。为了纪念这些ac，小美记下了一个长度为n的仅有a和c组成的字符串。小团天天摸鱼不刷题，所以ac没有小美多。小团决定在小美睡觉的时候把小美字符串中的ac通过交换相邻两个字符全部消除。即通过一系列交换相邻字符的操作使得操作后的串中不存在ac这个字串。小团想知道他至少要交换多少次才能达成他的目的。



输入描述
第一行有一个整数n(1<=n<=100000)，代表小美拥有的字符串长度。

第二行有一个仅由a和c组成的字符串，代表小美的字符串。

输出描述
输出一个整数，代表小团想知道的答案。

如样例中先交换前两个字符再交换中间两个字符即可使小美的字符串变成ccaa。


样例输入
4
acca
样例输出
2
 */

/*
四边形
时间限制： 3000MS
内存限制： 589824KB
题目描述：
小美有一张无向图。特别会数数的小团想拿个难题考一下小美，于是他决定询问小美这张无向图中有多少个不同的四边形。无向图中的四边形由四个不同的点a,b,c,d和四条属于这张无向图的边(a,b),(b,c),(c,d),(d,a)组成。若两个四边形的点集和边集相同，则我们认为这两个四边形是同一个四边形。小美的这张无向图有点大，她希望你帮她算出这个难题的答案。



输入描述
第一行有一个整数n代表这张无向图中的点数。

接下来n行给出这张无向图的邻接矩阵，每行有n个由空格隔开的整数，每个整数的值为0或1。

输入保证对角元为0，即这张图没有自环。

输出描述
输出一个整数，代表这张无向图中有多少个不同的四边形。


样例输入
6
0 1 1 1 0 0
1 0 1 0 1 0
1 1 0 0 0 1
1 0 0 0 1 1
0 1 0 1 0 1
0 0 1 1 1 0
样例输出
3

提示
n≤500
 */
/*
编程题《四边形》，n的范围为小于等于500，特此说明。
 同学你好！编程题《坐公交》如公交不能相互到达，此时输出-1，特此说明。数据不变，已通过的无需修改。
 */